home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 10828 / 10828.xpi / chrome / content / newtabking-options.js < prev    next >
Text File  |  2010-02-10  |  28KB  |  787 lines

  1. window.onload = loadPrefs;
  2.  
  3. function loadShortcuts(shortcutsList)    {
  4.     var listy = document.getElementById('shortcutsListChildren');
  5.     if ( listy.hasChildNodes() ){
  6.         while ( listy.childNodes.length >= 1 )        {  listy.removeChild( listy.firstChild ); } 
  7.     }
  8.  
  9.     var shortcutsItems, listitem, shortcutName, shortcutPath, shortcutIcon;
  10.     for (var i=0;i<shortcutsList.length;i++)    {
  11.         if (shortcutsList[i]=='')    continue;
  12.         shortcutsItems = shortcutsList[i].split('::');
  13.         if (shortcutsItems[0] == '' || shortcutsItems[0] == null || shortcutsItems[1] == '' || shortcutsItems[1] == null)    continue;
  14.         addToShortcutsList(shortcutsItems[1], shortcutsItems[0], shortcutsItems[2]);
  15.     }    
  16. }
  17.  
  18. function loadPrefs()    {
  19.     var prefs = Components.classes["@mozilla.org/preferences-service;1"]
  20.                         .getService(Components.interfaces.nsIPrefService).getBranch(null);
  21.                         
  22.     // General
  23.     var ntkFocus = false;
  24.     try    {
  25.         ntkFocus = prefs.getBoolPref("extensions.ntk.ntkfocus-pref");
  26.     }    catch (e)    {
  27.         prefs.setBoolPref("extensions.ntk.ntkfocus-pref", false);
  28.     }
  29.     if (ntkFocus )    {
  30.         document.getElementById('autoFocus-Pref').checked = 'true';        
  31.     }    else    {
  32.         document.getElementById('autoFocus-Pref').checked = '';    
  33.     }
  34.     
  35.     var ntkInNewWindow = false;
  36.     try    {
  37.         ntkInNewWindow = prefs.getBoolPref("extensions.ntk.loadInNewWindow-pref");
  38.     }    catch (e)    {
  39.         prefs.setBoolPref("extensions.ntk.loadInNewWindow-pref", false);
  40.     }
  41.     if (ntkInNewWindow )    {
  42.         document.getElementById('loadInNewWindow-Pref').checked = 'true';        
  43.     }    else    {
  44.         document.getElementById('loadInNewWindow-Pref').checked = '';    
  45.     }
  46.  
  47.     var ntkInNewTab = false;
  48.     try    {
  49.         ntkInNewTab = prefs.getBoolPref("extensions.ntk.loadInNewTab-pref");
  50.     }    catch (e)    {
  51.         prefs.setBoolPref("extensions.ntk.loadInNewTab-pref", false);
  52.     }
  53.     if (ntkInNewTab )    {
  54.         document.getElementById('loadInNewTab-Pref').checked = 'true';        
  55.     }    else    {
  56.         document.getElementById('loadInNewTab-Pref').checked = '';    
  57.     }
  58.  
  59.     
  60.     var mostUsedinNewTab = false;
  61.     try    {
  62.         mostUsedinNewTab = prefs.getBoolPref("extensions.ntk.mostUsedinNewTab-pref");
  63.     }    catch (e)    {
  64.         prefs.setBoolPref("extensions.ntk.mostUsedinNewTab-pref", false);
  65.     }
  66.     if (mostUsedinNewTab )    {
  67.         document.getElementById('mostUsedinNewTab-Pref').checked = 'true';        
  68.     }    else    {
  69.         document.getElementById('mostUsedinNewTab-Pref').checked = '';    
  70.     }
  71.  
  72.     var toolbarButton = false;
  73.     try    {
  74.         toolbarButton = prefs.getBoolPref("extensions.ntk.ntkToolbar-pref");
  75.     }    catch (e)    {
  76.         prefs.setBoolPref("extensions.ntk.ntkToolbar-pref", false);
  77.     }
  78.     if (toolbarButton )    {
  79.         document.getElementById('ntkToolbar-pref').checked = 'true';        
  80.     }    else    {
  81.         document.getElementById('ntkToolbar-pref').checked = '';    
  82.     }
  83.     
  84.     var statusbarButton = true;
  85.     try    {
  86.         statusbarButton = prefs.getBoolPref("extensions.ntk.ntkStatusbar-pref");
  87.     }    catch (e)    {
  88.         prefs.setBoolPref("extensions.ntk.ntkStatusbar-pref", true);
  89.     }
  90.     if (statusbarButton )    {
  91.         document.getElementById('ntkStatusbar-pref').checked = 'true';        
  92.     }    else    {
  93.         document.getElementById('ntkStatusbar-pref').checked = '';    
  94.     }
  95.  
  96.     
  97.     var tips = 1;
  98.     try    {
  99.         tips = prefs.getIntPref("extensions.ntk.ntkTip");
  100.     }    catch (e)    {
  101.         prefs.setIntPref("extensions.ntk.ntkTip", 1);
  102.     }
  103.     if (tips>0 )    {
  104.         document.getElementById('ntkTip-pref').checked = 'true';        
  105.     }    else    {
  106.         document.getElementById('ntkTip-pref').checked = '';    
  107.     }
  108.     var sharing = true;
  109.     try    {
  110.         sharing = prefs.getBoolPref("extensions.ntk.ntkSharing");
  111.     }    catch (e)    {
  112.         prefs.setBoolPref("extensions.ntk.ntkSharing", true);
  113.     }
  114.     if (sharing)    {
  115.         document.getElementById('sharing-pref').checked = 'true';        
  116.     }    else    {
  117.         document.getElementById('sharing-pref').checked = '';    
  118.     }
  119.     var headerAndSearch = true;
  120.     try    {
  121.         headerAndSearch = prefs.getBoolPref("extensions.ntk.ntkHeaderSearch");
  122.     }    catch (e)    {
  123.         prefs.setBoolPref("extensions.ntk.ntkHeaderSearch", true);
  124.     }
  125.     if (headerAndSearch )    {
  126.         document.getElementById('ntkHeaderSearch-pref').checked = 'true';        
  127.     }    else    {
  128.         document.getElementById('ntkHeaderSearch-pref').checked = '';    
  129.     }
  130.     
  131.     var ntkTabPerf = true;
  132.     try    {
  133.         ntkTabPerf = prefs.getBoolPref("extensions.ntk.ntkTabPerfOn-pref");
  134.     }    catch (e)    {
  135.         prefs.setBoolPref("extensions.ntk.ntkTabPerfOn-pref", true);
  136.     }
  137.     if (ntkTabPerf )    {
  138.         document.getElementById('ntkTabPerfOn-pref').checked = 'true';        
  139.     }    else    {
  140.         document.getElementById('ntkTabPerfOn-pref').checked = '';    
  141.     }
  142.     
  143.  
  144.     var themes = true;
  145.     try    {
  146.         themes = prefs.getBoolPref("extensions.ntk.ntkThemes");
  147.     }    catch (e)    {
  148.         prefs.setBoolPref("extensions.ntk.ntkThemes", true);
  149.     }
  150.     if (themes )    {
  151.         document.getElementById('themes-pref').checked = 'true';        
  152.     }    else    {
  153.         document.getElementById('themes-pref').checked = '';    
  154.     }
  155.  
  156.  
  157.  
  158.     var clipboard = true;
  159.     clipboard = prefs.getBoolPref("extensions.ntk.ntkClipboard");
  160.  
  161.     if (clipboard )    {
  162.         document.getElementById('ntkClipboard-pref').checked = 'true';        
  163.     }    else    {
  164.         document.getElementById('ntkClipboard-pref').checked = '';    
  165.     }
  166.  
  167.     var searchEngine = 4;
  168.     try    {
  169.         searchEngine = prefs.getIntPref("extensions.ntk.ntksearchEngine-pref");
  170.     }    catch (e)    {
  171.         prefs.setIntPref("extensions.ntk.ntksearchEngine-pref", 4);
  172.     }    
  173.     document.getElementById('NTKSearchEngine-pref').selectedIndex = searchEngine ;
  174.  
  175.     var titleStr = '(click to customize!)';
  176.     try {
  177.         titleStr = prefs.getComplexValue("extensions.ntk.titleStr", Components.interfaces.nsISupportsString).data;
  178.     }    catch (e)    {
  179.            titleStr = '(Click here to change!)';                
  180.     }
  181.     document.getElementById('ntkTitleStr-Pref').value = titleStr;
  182.  
  183.     var tabTitleStr = 'New Tab King';
  184.     try {
  185.         tabTitleStr = prefs.getComplexValue("extensions.ntk.tabTitleStr", Components.interfaces.nsISupportsString).data;
  186.     }    catch (e)    {    }
  187.     document.getElementById('ntkTitleTabStr-Pref').value = tabTitleStr ;
  188.  
  189.     // Background prefs
  190.     try {
  191.         var backgroundFILE = prefs.getComplexValue("extensions.ntk.backgroundFILE", Components.interfaces.nsISupportsString).data;
  192.         backgroundFILE = backgroundFILE.replace('file://', '');
  193.     }    catch (e)    {
  194.         var backgroundFILE = '';                
  195.     }
  196.     
  197.     try {
  198.         var backgroundRepeat  =    prefs.getIntPref("extensions.ntk.backgroundRepeat");    
  199.     }    catch (e)    {
  200.         var backgroundRepeat =0;
  201.     }
  202.     
  203.     try {
  204.         var backgroundColor  =    prefs.getCharPref("extensions.ntk.backgroundColor");    
  205.     }    catch (e)    {
  206.         var backgroundColor  ='eaeaea';
  207.     }
  208.  
  209.     if (backgroundFILE == '')    {
  210.         document.getElementById('enableBackground-Pref').checked = '';
  211.         document.getElementById('backgroundBrowseButton').disabled="true";
  212.         document.getElementById('backgroundPath-Pref').disabled="true";
  213.         document.getElementById('backgroundRepeat-Pref').disabled="true";
  214.         document.getElementById('backgroundColor-Pref').disabled="true";                
  215.     }    else    {
  216.         document.getElementById('enableBackground-Pref').checked = 'true';
  217.         document.getElementById('backgroundBrowseButton').disabled="";
  218.         document.getElementById('backgroundPath-Pref').disabled="";        
  219.         document.getElementById('backgroundRepeat-Pref').disabled="";
  220.         document.getElementById('backgroundColor-Pref').disabled="";                        
  221.     }
  222.     
  223.     document.getElementById('backgroundPath-Pref').value = backgroundFILE;
  224.     document.getElementById('backgroundRepeat-Pref').value = backgroundRepeat ;
  225.     document.getElementById('backgroundColor-Pref').value = backgroundColor  ;
  226.  
  227.     // Most used websites prefs
  228.     try        {
  229.         var blackListString = prefs.getCharPref("extensions.ntk.blacklist");
  230.         var blacklist = blackListString.split(';');
  231.         for (var i=0;i<blacklist.length;i++)    {
  232.             if (blacklist[i]=='')    continue;
  233.             addExceptionItem('blacklist-Pref', blacklist[i]);            
  234.         }
  235.     }        catch(e)    {
  236.        
  237.     }
  238.  
  239.     // black tab list prefs
  240.     try        {
  241.         var blackListString = prefs.getCharPref("extensions.ntk.blackTablist");
  242.         var blacklist = blackListString.split(';');
  243.  
  244.         for (var i=0;i<blacklist.length;i++)    {
  245.             if (blacklist[i]=='')    continue;
  246.             addExceptionItem('blacklistTabs-Pref', blacklist[i]);
  247.         }
  248.     }        catch(e)    {
  249.        
  250.     }
  251.  
  252.     // Suggested sites
  253.     var    suggestedOn = true;
  254.     try {
  255.         suggestedOn = prefs.getBoolPref("extensions.ntk.suggested-pref");
  256.     } catch (e){    
  257.         prefs.setBoolPref("extensions.ntk.suggested-pref", true);
  258.     }
  259.     
  260.     if (suggestedOn)    {
  261.         document.getElementById('enableSuggested-Pref').checked = 'true';        
  262.     }    else    {
  263.         document.getElementById('enableSuggested-Pref').checked = '';    
  264.     }
  265.  
  266.     // Shortcuts
  267.     var shortcutsOn = true;
  268.     try {
  269.         shortcutsOn = prefs.getBoolPref("extensions.ntk.shortcuts-pref");
  270.     } catch (e){    
  271.         prefs.setBoolPref("extensions.ntk.shortcuts-pref", true);
  272.     }
  273.     if (shortcutsOn)    {
  274.         document.getElementById('enableShortcuts-Pref').checked = 'true';
  275.         document.getElementById('shortcutsList').disabled="";
  276.         document.getElementById('removeShortcutsID').disabled="";        
  277.         document.getElementById('addShortcutName-Pref').disabled="";
  278.         document.getElementById('shortcutPathBtnID').disabled="";
  279.         document.getElementById('shortcutIconPathBtnID').disabled="";
  280.         document.getElementById('shortcutAddBtn').disabled="";
  281.     }    else    {
  282.         document.getElementById('enableShortcuts-Pref').checked = '';
  283.         document.getElementById('shortcutsList').disabled="true";
  284.         document.getElementById('removeShortcutsID').disabled="true";
  285.         document.getElementById('addShortcutName-Pref').disabled="true";
  286.         document.getElementById('shortcutPathBtnID').disabled="true";
  287.         document.getElementById('shortcutIconPathBtnID').disabled="true";
  288.         document.getElementById('shortcutAddBtn').disabled="true";
  289.     }
  290.  
  291.     var shortcutsStr = prefs.getComplexValue("extensions.ntk.shortcuts", Components.interfaces.nsISupportsString).data;
  292.     loadShortcuts( shortcutsStr.split(';') );
  293.    
  294.     // Search Shortcuts
  295.     var searchShortcutsStr = prefs.getComplexValue("extensions.ntk.searchShortcuts", Components.interfaces.nsISupportsString).data;
  296.  
  297.     var searchShortcutsList = searchShortcutsStr.split(';');
  298.     var searchShortcutsItems, searchListitem, searchShortcutName, searchShortcutPath;
  299.     for (var i=0;i<searchShortcutsList.length;i++)    {
  300.         if (searchShortcutsList[i]=='')    continue;
  301.         searchShortcutsItems = searchShortcutsList[i].split('::');
  302.         if (searchShortcutsItems[0] == '' || searchShortcutsItems[0] == null || searchShortcutsItems[1] == '' || searchShortcutsItems[1] == null)    continue;
  303.         addToSearchShortcutsList(searchShortcutsItems[1], searchShortcutsItems[0]);
  304.     }    
  305.  
  306.     // Maxes
  307.     var maxMostUsed =    prefs.getIntPref("extensions.ntk.maxMostUsedSites");    
  308.     var maxRecentTabs=    prefs.getIntPref("extensions.ntk.maxRecentClosedTabs");    
  309.     
  310.     document.getElementById('maxMostUsed-Pref').value = maxMostUsed;
  311.     document.getElementById('maxRecentlyClosedTabs-Pref').value = maxRecentTabs;
  312.    
  313. }
  314.  
  315. function savePrefs()    {
  316.     var prefs = Components.classes["@mozilla.org/preferences-service;1"]
  317.                         .getService(Components.interfaces.nsIPrefService).getBranch(null);
  318.  
  319.     // General
  320.     var ntkFocus =     document.getElementById('autoFocus-Pref').checked;
  321.     prefs.setBoolPref("extensions.ntk.ntkfocus-pref", ntkFocus );
  322.     var ntkinNewWindow =     document.getElementById('loadInNewWindow-Pref').checked;
  323.     prefs.setBoolPref("extensions.ntk.loadInNewWindow-pref", ntkinNewWindow );
  324.     if (ntkinNewWindow)    prefs.setIntPref("browser.startup.page", 0);
  325.  
  326.     var ntkinNewTab =     document.getElementById('loadInNewTab-Pref').checked;
  327.     prefs.setBoolPref("extensions.ntk.loadInNewTab-pref", ntkinNewTab );
  328.  
  329.     var mostUsedinNewTab=     document.getElementById('mostUsedinNewTab-Pref').checked;
  330.     prefs.setBoolPref("extensions.ntk.mostUsedinNewTab-pref", mostUsedinNewTab);
  331.     var toolbarButton=     document.getElementById('ntkToolbar-pref').checked;
  332.     prefs.setBoolPref("extensions.ntk.ntkToolbar-pref", toolbarButton);
  333.  
  334.     var statusbarButton=     document.getElementById('ntkStatusbar-pref').checked;
  335.     prefs.setBoolPref("extensions.ntk.ntkStatusbar-pref", statusbarButton);
  336.  
  337.     var sharing=     document.getElementById('sharing-pref').checked;
  338.     prefs.setBoolPref("extensions.ntk.ntkSharing", sharing);
  339.     var headerAndSearch=     document.getElementById('ntkHeaderSearch-pref').checked;
  340.     prefs.setBoolPref("extensions.ntk.ntkHeaderSearch", headerAndSearch);
  341.  
  342.     var ntkPerf=     document.getElementById('ntkTabPerfOn-pref').checked;
  343.     prefs.setBoolPref("extensions.ntk.ntkTabPerfOn-pref", ntkPerf);    
  344.     
  345.     var themes=     document.getElementById('themes-pref').checked;
  346.     prefs.setBoolPref("extensions.ntk.ntkThemes", themes);
  347.  
  348.     var tips=     document.getElementById('ntkTip-pref').checked;
  349.     if (tips)    {
  350.         prefs.setIntPref("extensions.ntk.ntkTip", 1);    
  351.     }    else    {
  352.         prefs.setIntPref("extensions.ntk.ntkTip", 0);        
  353.     }
  354.     var clipboard=     document.getElementById('ntkClipboard-pref').checked;
  355.     prefs.setBoolPref("extensions.ntk.ntkClipboard", clipboard);
  356.  
  357.     var ntkSearchEngine =     document.getElementById('NTKSearchEngine-pref').selectedIndex ;
  358.     prefs.setIntPref("extensions.ntk.ntksearchEngine-pref", ntkSearchEngine );
  359.     
  360.     var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  361.     str.data = document.getElementById('ntkTitleStr-Pref').value;
  362.     prefs.setComplexValue("extensions.ntk.titleStr", Components.interfaces.nsISupportsString, str);        
  363.     var str2 = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  364.     str2.data = document.getElementById('ntkTitleTabStr-Pref').value;
  365.     prefs.setComplexValue("extensions.ntk.tabTitleStr", Components.interfaces.nsISupportsString, str2);        
  366.  
  367.     // Background prefs
  368.     var backImg = '', backRepeat =0, backColor='eaeaea';
  369.     if (document.getElementById('enableBackground-Pref').checked == true)    {
  370.         backImg = document.getElementById('backgroundPath-Pref').value;    
  371.         backRepeat = document.getElementById('backgroundRepeat-Pref').value;
  372.         backColor = document.getElementById('backgroundColor-Pref').value;
  373.     }    
  374.     
  375.     var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  376.     if (backImg != '' )    str.data = 'file://' + backImg;
  377.     prefs.setComplexValue("extensions.ntk.backgroundFILE", Components.interfaces.nsISupportsString, str);
  378.     prefs.setIntPref("extensions.ntk.backgroundRepeat", backRepeat);
  379.     prefs.setCharPref("extensions.ntk.backgroundColor", backColor);
  380.  
  381.     var MY_ID = "{FC5BAC7D-D696-4ba6-B913-CF8F000C33DF}";
  382.     var em = Components.classes["@mozilla.org/extensions/manager;1"].
  383.                  getService(Components.interfaces.nsIExtensionManager);
  384.     var fileX = em.getInstallLocation(MY_ID).getItemFile(MY_ID, "chrome/content/themes/background.css");
  385.     var NTK_out = fileX.path;
  386.     var fileOut = Components.classes["@mozilla.org/file/local;1"].
  387.                          createInstance(Components.interfaces.nsILocalFile);
  388.     fileOut.initWithPath(NTK_out);
  389.  
  390.     var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].
  391.                              createInstance(Components.interfaces.nsIFileOutputStream);
  392.  
  393.     foStream.init(fileOut, 0x02 | 0x08 | 0x20, -1, 0); // 666
  394.     var charset = "UTF-8"; // Can be any character encoding name that Mozilla supports
  395.  
  396.     var os = Components.classes["@mozilla.org/intl/converter-output-stream;1"]
  397.                        .createInstance(Components.interfaces.nsIConverterOutputStream);
  398.     
  399.     // This assumes that foStreamis the nsIOutputStream you want to write to
  400.     os.init(foStream, charset, 0, 0x0000);
  401.     var data ='    ';
  402.     if (backImg!='')    {
  403.         data = 'div#background {background-image: url(\'file://'+backImg+'\'); background-repeat:';
  404.         if (backRepeat==0)    data += 'repeat-x';
  405.         if (backRepeat==1)    data += 'repeat-y';
  406.         if (backRepeat==2)    data += 'repeat';
  407.         if (backRepeat==3)    data += 'no-repeat';
  408.         data += ';  }div#mainStuff{ opacity:0.85 }';    
  409.     }    
  410.     os.writeString(data);
  411.     os.close();
  412.     foStream.close();
  413.  
  414.  
  415.  
  416.     // Most used websites prefs
  417.     var blackListString = getExceptionList('blacklist-Pref');
  418.     prefs.setCharPref("extensions.ntk.blacklist", blackListString);
  419.     
  420.       // black tab list prefs
  421.     var blackListTabString = getExceptionList('blacklistTabs-Pref');
  422.     prefs.setCharPref("extensions.ntk.blackTablist", blackListTabString);    
  423.     
  424.     // Maxes
  425.     var maxMostUsed  =document.getElementById('maxMostUsed-Pref').value;
  426.     var maxRecentTabs=document.getElementById('maxRecentlyClosedTabs-Pref').value;
  427.  
  428.     prefs.setIntPref("extensions.ntk.maxMostUsedSites", maxMostUsed );    
  429.     prefs.setIntPref("extensions.ntk.maxRecentClosedTabs", maxRecentTabs);    
  430.     
  431.     // Suggested sites
  432.     var suggestedOff =     document.getElementById('enableSuggested-Pref').checked;
  433.     prefs.setBoolPref("extensions.ntk.suggested-pref", suggestedOff );
  434.  
  435.     // Shortcuts
  436.     var shortcutsOff =     document.getElementById('enableShortcuts-Pref').checked;    
  437.     prefs.setBoolPref("extensions.ntk.shortcuts-pref", shortcutsOff );
  438.     
  439.     var shorty = getShortcuts();
  440.     var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  441.     str.data = shorty;
  442.     prefs.setComplexValue("extensions.ntk.shortcuts", Components.interfaces.nsISupportsString, str);
  443.  
  444.     // Search Shortcuts
  445.     var searchShorty = getSearchShortcuts();
  446.     var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  447.     str.data = searchShorty ;
  448.     prefs.setComplexValue("extensions.ntk.searchShortcuts", Components.interfaces.nsISupportsString, str);
  449.  
  450.     try {
  451.         window.arguments[1]();
  452.     }    catch (e)    {
  453.     }
  454.     
  455.     window.close();
  456. }
  457.  
  458. function getExceptionList(listID)    {
  459.     var listy = document.getElementById(listID);
  460.     var i=0;
  461.     var item;
  462.     var outStr='';
  463.     while (item = listy.getItemAtIndex(i))    {
  464.         if (i > 0)    outStr = outStr + ';';
  465.         outStr = outStr + item.getAttribute('label');
  466.         i++;
  467.     }
  468.     return outStr;
  469. }
  470.  
  471. function addExceptionItem(listID, what)    {
  472.     var listy = document.getElementById(listID);
  473.     var listitem = document.createElement('listitem');
  474.     listitem.setAttribute('label',what);
  475.     //listitem.setAttribute('type','checkbox');
  476.     listy.appendChild(listitem);        
  477. }
  478.  
  479. function addToSearchShortcutsList(name, path)    {
  480.     var listy = document.getElementById('searchShortcutsListChildren');
  481.        var listitem = document.createElement('treeitem');
  482.        var treerow = document.createElement('treerow');       
  483.     var shortcutName = document.createElement('treecell');
  484.     shortcutName.setAttribute('label', name);
  485.     treerow.appendChild(shortcutName);
  486.     
  487.     var shortcutPath = document.createElement('treecell');
  488.     shortcutPath .setAttribute('label', path);
  489.     treerow.appendChild(shortcutPath );
  490.     
  491.     listitem.appendChild(treerow);
  492.     listy.appendChild(listitem);
  493. }    
  494.  
  495. function addToShortcutsList(name, path, icon)    {
  496.     var listy = document.getElementById('shortcutsListChildren');
  497.        var listitem = document.createElement('treeitem');
  498.        var treerow = document.createElement('treerow');       
  499.     var shortcutName = document.createElement('treecell');
  500.     shortcutName.setAttribute('label', name);
  501.     treerow.appendChild(shortcutName);
  502.     
  503.     var shortcutPath = document.createElement('treecell');
  504.     shortcutPath .setAttribute('label', path);
  505.     treerow.appendChild(shortcutPath );
  506.     
  507.     var shortcutIcon = document.createElement('treecell');
  508.     if (icon == '' || icon == null)    {    icon = ' ';    }
  509.        shortcutIcon.setAttribute('label', icon);
  510.        treerow.appendChild(shortcutIcon );                
  511.  
  512.     listitem.appendChild(treerow);
  513.     listy.appendChild(listitem);
  514.     
  515.     
  516.     /*
  517.             <treechildren>
  518.               <treeitem>
  519.                 <treerow>
  520.                     <treecell label="Feathers" />
  521.                     <treecell label="Male" />
  522.                     <treecell label="Tabby" />
  523.                 </treerow>
  524.                </treeitem>
  525.               </treechildren>
  526.     */
  527. }
  528.  
  529. function browseLoc(returnID, showExtensionDir, isImage)    {
  530.     const nsIFilePicker = Components.interfaces.nsIFilePicker;
  531.     var fp = Components.classes["@mozilla.org/filepicker;1"]
  532.                    .createInstance(nsIFilePicker);
  533.     fp.init(window, "Select background image file", nsIFilePicker.modeOpen);
  534.     if (showExtensionDir)    {
  535.         var MY_ID = "{FC5BAC7D-D696-4ba6-B913-CF8F000C33DF}";
  536.         var em = Components.classes["@mozilla.org/extensions/manager;1"].
  537.                  getService(Components.interfaces.nsIExtensionManager);
  538.         // the path may use forward slash ("/") as the delimiter
  539.         // returns nsIFile for the extension's install.rdf
  540.         var fileY = em.getInstallLocation(MY_ID).getItemFile(MY_ID, "chrome/content/themes");
  541.         fp.displayDirectory = fileY;
  542.     }
  543.     if (isImage)    {
  544.         fp.appendFilters( nsIFilePicker.filterAll | nsIFilePicker.filterImages);    
  545.     }    else    {
  546.         fp.appendFilters( nsIFilePicker.filterAll);    
  547.     }
  548.             
  549.     var rv = fp.show();
  550.     if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) {
  551.       var file = fp.file;
  552.       var path = fp.file.path;
  553.         path = path.replace(/\\/g, '/');
  554.       // work with returned nsILocalFile...
  555.         
  556.         document.getElementById(returnID).value = path;    
  557.     }
  558. }
  559.  
  560. function enableShortcuts()    {
  561.     var enab = document.getElementById('enableShortcuts-Pref').checked;
  562.     
  563.     if (!enab )    {
  564.         document.getElementById('shortcutsList').disabled="true";
  565.         document.getElementById('removeShortcutsID').disabled="true";
  566.         document.getElementById('addShortcutName-Pref').disabled="true";
  567.         document.getElementById('shortcutPathBtnID').disabled="true";
  568.         document.getElementById('shortcutIconPathBtnID').disabled="true";
  569.         document.getElementById('shortcutAddBtn').disabled="true";
  570.     }    else    {
  571.         document.getElementById('shortcutsList').disabled="";
  572.         document.getElementById('removeShortcutsID').disabled="";        
  573.         document.getElementById('addShortcutName-Pref').disabled="";
  574.         document.getElementById('shortcutPathBtnID').disabled="";
  575.         document.getElementById('shortcutIconPathBtnID').disabled="";
  576.         document.getElementById('shortcutAddBtn').disabled="";
  577.     }
  578. }
  579.  
  580.  
  581. function enableBackground()    {
  582.     var enab = document.getElementById('enableBackground-Pref').checked;
  583.     
  584.     if (enab)    {
  585.         document.getElementById('backgroundBrowseButton').disabled="";
  586.     //    document.getElementById('backgroundPath-Pref').disabled="";
  587.         document.getElementById('backgroundRepeat-Pref').disabled="";
  588.         document.getElementById('backgroundColor-Pref').disabled="";                
  589.  
  590.     }    else    {
  591.         document.getElementById('backgroundBrowseButton').disabled="true";    
  592.         document.getElementById('backgroundRepeat-Pref').disabled="true";
  593.         document.getElementById('backgroundColor-Pref').disabled="true";                
  594.         
  595.     }
  596. }
  597.  
  598. function removeSelectedFromList(listID)    {
  599.     var list = document.getElementById(listID);    
  600.     var count = list.selectedCount;
  601.     while (count--){
  602.         var item = list.selectedItems[0];
  603.         list.removeItemAt(list.getIndexOfItem(item));
  604.     }
  605. }
  606.  
  607. function AddSearchShortcutBtn()    {
  608.     var path = document.getElementById('x1-Pref').value;
  609.     var name = document.getElementById('x2-Pref').value;
  610.     
  611.     if (path == '' || name == '')    return;
  612. //    path = path.replace(/\//g, '\\');    
  613.     
  614.     addToSearchShortcutsList(name, path);
  615.     
  616.     document.getElementById('x1-Pref').value= '';
  617.     document.getElementById('x2-Pref').value= '';
  618.  
  619. }
  620.  
  621.  
  622.  
  623. function addShortcutBtn()    {
  624.     var name = document.getElementById('addShortcutName-Pref').value;
  625.     var path = document.getElementById('addShortcutPath-Pref').value;
  626.     var icon = document.getElementById('addShortcutIcon-Pref').value;
  627.     
  628.     if (path == '' || name == '')    return;
  629.     path = path.replace(/\//g, '\\');    
  630.     if    (icon != '')    {    icon = 'file://'+icon;    }
  631.     
  632.     addToShortcutsList(name, path, icon);
  633.     
  634.     document.getElementById('addShortcutName-Pref').value= '';
  635.     document.getElementById('addShortcutPath-Pref').value= '';
  636.     document.getElementById('addShortcutIcon-Pref').value = '';
  637.  
  638. }
  639. function getSearchShortcuts()    {
  640.     var tree = document.getElementById('searchShortcutsList');    
  641.     tree.view.selection.rangedSelect(0,100,true);
  642.     var outStr = '';
  643.     var rangeCount = tree.view.selection.getRangeCount();
  644.  
  645.     for(var i=0; i < rangeCount; i++)   {
  646.         var start = {};
  647.         var end = {};
  648.         tree.view.selection.getRangeAt(i, start, end);
  649.         for(var c=start.value; c <= end.value; c++)  {
  650.             try    {
  651.                    var selected = tree.view.getItemAtIndex(c);
  652.                 if (outStr != '')    outStr += ';';
  653.                 var shortcutName = selected.firstChild.firstChild.getAttribute('label');
  654.                 var shortcutPath = selected.firstChild.firstChild.nextSibling.getAttribute('label');
  655.             }    catch (e)    {
  656.                 break;
  657.             }
  658.             outStr += shortcutPath + '::' + shortcutName;
  659.         }
  660.     }
  661.  
  662.     return outStr;
  663. }
  664.  
  665. function getShortcuts()    {
  666.     var tree = document.getElementById('shortcutsList');    
  667.     tree.view.selection.rangedSelect(0,100,true);
  668.     var outStr = '';
  669.     var rangeCount = tree.view.selection.getRangeCount();
  670.  
  671.     for(var i=0; i < rangeCount; i++)   {
  672.         var start = {};
  673.         var end = {};
  674.         tree.view.selection.getRangeAt(i, start, end);
  675.         for(var c=start.value; c <= end.value; c++)  {
  676.             try    {
  677.                    var selected = tree.view.getItemAtIndex(c);
  678.                 if (outStr != '')    outStr += ';';
  679.                 var shortcutName = selected.firstChild.firstChild.getAttribute('label');
  680.                 var shortcutPath = selected.firstChild.firstChild.nextSibling.getAttribute('label');
  681.                 var shortcutIcon = selected.firstChild.firstChild.nextSibling.nextSibling.getAttribute('label');
  682.             }    catch (e)    {
  683.                 break;
  684.             }
  685.             outStr += shortcutPath + '::' + shortcutName;
  686.             if (shortcutIcon != '')    outStr += '::' + shortcutIcon;
  687.         }
  688.     }
  689.     return outStr;
  690. }
  691.  
  692. function moveUp(listID)    {
  693.      var tree = document.getElementById(listID);
  694.      var rangeCount = tree.view.selection.getRangeCount();
  695.      var start = {};
  696.      var end = {};
  697.      tree.view.selection.getRangeAt(0, start, end);
  698.      if (start.value!=end.value)    return;
  699.  
  700.      var selected = tree.currentIndex;
  701.      if (selected==-1)    return;
  702.  
  703.      var shor = getShortcuts();
  704.  
  705.  
  706.      var shortcutsList = shor.split(';');     
  707.      
  708.      if (selected>0)    {
  709.          var temp = shortcutsList[selected-1];
  710.          shortcutsList[selected-1] = shortcutsList[selected];
  711.          shortcutsList[selected] = temp;
  712.          
  713.         loadShortcuts( shortcutsList );   
  714.         tree.view.selection.select(selected-1);
  715.     }
  716. }
  717.  
  718.  
  719. function moveDown(listID)    {
  720.      var tree = document.getElementById(listID);
  721.      var rangeCount = tree.view.selection.getRangeCount();
  722.      var start = {};
  723.      var end = {};
  724.      tree.view.selection.getRangeAt(0, start, end);
  725.      if (start.value!=end.value)    return;
  726.  
  727.      var selected = tree.currentIndex;
  728.  
  729.      var shor = getShortcuts();
  730.      var shortcutsList = shor.split(';');     
  731.      if (selected<shortcutsList.length-1)    {     
  732.          var temp = shortcutsList[selected+1];
  733.          shortcutsList[selected+1] = shortcutsList[selected];
  734.          shortcutsList[selected] = temp;
  735.          
  736.         loadShortcuts( shortcutsList );   
  737.         tree.view.selection.select(selected+1);
  738.     }
  739. }
  740.  
  741. function removeSelectedFromTree(listID)    {
  742.      var tree = document.getElementById(listID);
  743.      var rangeCount = tree.view.selection.getRangeCount();
  744.  
  745.      var toDelArr = new Array();
  746.      var toDelArrI = 0;
  747.      for(var i=0; i < rangeCount; i++)   {
  748.         var start = {};
  749.         var end = {};
  750.         tree.view.selection.getRangeAt(i, start, end);
  751.         for(var c=start.value; c <= end.value; c++)  {
  752.                var selected = tree.view.getItemAtIndex(c);
  753.                toDelArr[toDelArrI] = selected;
  754.                toDelArrI++;
  755.         }
  756.      }
  757.      
  758.      for (var i=0;i<toDelArr.length;i++)    {
  759.           var parent = toDelArr[i].parentNode;
  760.           parent.removeChild(toDelArr[i]);
  761.      }     
  762. }
  763.  
  764. function newtabkingPrefwindowButtons(){
  765.     var platform = navigator.platform.toLowerCase();
  766.     var isWindows = ((platform.indexOf("win") != -1) ? true : false);
  767.  
  768.     if(!isWindows){
  769.         try{    
  770.             var buttonAccept=document.documentElement.getButton('accept');
  771.             buttonAccept.hidden = false;
  772.             buttonAccept.disabled = false;
  773.         }catch(e){;}
  774.         
  775.         try{
  776.             document.getElementById("newtabkingAcceptBtn").hidden = false;
  777.             document.getElementById("newtabkingAcceptBtn").disabled = false;
  778.         }catch(e){;}
  779.       
  780.         try{
  781.             document.getElementById("newtabkingAcceptBtn").hidden = false;
  782.             document.getElementById("newtabkingCancelBtn").hidden = false;
  783.         }catch(e){;}
  784.             
  785.     }//if    
  786.     return true;
  787. }